#ifndef INPUTSIMULATOR_H
#define INPUTSIMULATOR_H

#include <QObject>
#include <QPoint>
#include "../logging/logger.h"

// 输入模拟器类，用于模拟鼠标和键盘事件
class InputSimulator : public QObject
{
    Q_OBJECT

public:
    explicit InputSimulator(QObject *parent = nullptr);
    ~InputSimulator();

    // 初始化模拟器
    bool initialize();

    // 移动鼠标到指定位置
    bool moveMouse(int x, int y);
    
    // 鼠标按下事件
    bool mousePress(int x, int y, int button);
    
    // 鼠标释放事件
    bool mouseRelease(int x, int y, int button);
    
    // 鼠标点击事件（按下+释放）
    bool mouseClick(int x, int y, int button);
    
    // 键盘按下事件
    bool keyPress(int key);
    
    // 键盘释放事件
    bool keyRelease(int key);
    
    // 键盘点击事件（按下+释放）
    bool keyClick(int key);
    
    // 转换Qt键码到系统键码
    int mapKey(int qtKey);
    
    // 转换Qt鼠标按钮到系统鼠标按钮
    int mapMouseButton(int qtButton);

private:
#ifdef Q_OS_WIN
    // Windows相关变量和方法
    void initWindows();
#endif

#ifdef Q_OS_LINUX
    // Linux相关变量和方法
    void initLinux();
    void cleanupLinux();
    
    // X11显示
    void* display;
#endif

#ifdef Q_OS_MACOS
    // macOS相关变量和方法
    void initMacOS();
#endif

    // 当前鼠标位置
    QPoint currentPos;
    
    // 初始化标志
    bool initialized;
};

#endif // INPUTSIMULATOR_H 